library(tidyverse)
library(sf)
library(maps)
library(plotly)
italy <- map_data("italy")
catania <- italy %>%
filter(region == "Catania")
catania_crime <- read_csv("Sicily2026_Catania_IncomeCrime_ONE.csv")
# Plot the base map
italy_map <- ggplot() +
geom_polygon(data = italy, aes(x = long, y = lat, group = group), fill = "white", color = "lightgrey") +
geom_polygon(data = italy, aes(x = long, y = lat, group = region), fill = NA, color = NA) +
geom_polygon(data = catania, aes(x = long, y = lat, group = region), fill = "red", color = "red") +
#geom_point(data = catania_crime, aes(x = Longitude, y = Latitude, group = CrimeTier, color = CrimeTier)) +
coord_map() +
theme_void()# +
# labs(title = "Italy Base Map")
ggplotly(italy_map)
catania_crime <- catania_crime %>%
filter(IncomeTier != "Baseline") %>%
mutate(visitability = factor(StyleKey, levels = c(
"Income=Higher | Crime=Lower",
"Income=Mid | Crime=Lower",
"Income=Mid | Crime=Mid",
"Income=Lower | Crime=Mid",
"Income=Lower | Crime=Higher"),
labels = c(1,2,3,4,5)
),
visitability = factor(visitability, labels = c(
"Income=Higher | Crime=Lower",
"Income=Mid | Crime=Lower",
"Income=Mid | Crime=Mid",
"Income=Lower | Crime=Mid",
"Income=Lower | Crime=Higher"),
levels = c(1,2,3,4,5)
)
)
# Plot Catania are only
catania_map <- ggplot() +
geom_polygon(data = catania, aes(x = long, y = lat, group = group), fill = "white", color = "lightgrey") +
#geom_point(data = catania_crime, aes(x = Longitude, y = Latitude, group = CrimeTier, color = CrimeTier)) +
#geom_point(data = catania_crime, aes(x = Longitude, y = Latitude, group = IncomeTier, color = IncomeTier)) +
geom_point(data = catania_crime, aes(x = Longitude, y = Latitude, group = Name, color = visitability)) +
coord_map() +
theme_void() +
labs(title = "Catania Region") +
scale_color_manual(values = colorRampPalette(c("darkgreen", "red"))(5))
ggplotly(catania_map)
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7ciwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoc2YpDQpsaWJyYXJ5KG1hcHMpDQpsaWJyYXJ5KHBsb3RseSkNCmBgYA0KDQoNCmBgYHtyLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRX0NCml0YWx5IDwtIG1hcF9kYXRhKCJpdGFseSIpDQoNCmNhdGFuaWEgPC0gaXRhbHkgJT4lIA0KICBmaWx0ZXIocmVnaW9uID09ICJDYXRhbmlhIikNCg0KY2F0YW5pYV9jcmltZSA8LSByZWFkX2NzdigiU2ljaWx5MjAyNl9DYXRhbmlhX0luY29tZUNyaW1lX09ORS5jc3YiKQ0KYGBgDQoNCmBgYHtyfQ0KIyBQbG90IHRoZSBiYXNlIG1hcA0KaXRhbHlfbWFwIDwtIGdncGxvdCgpICsNCiAgZ2VvbV9wb2x5Z29uKGRhdGEgPSBpdGFseSwgYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IGdyb3VwKSwgZmlsbCA9ICJ3aGl0ZSIsIGNvbG9yID0gImxpZ2h0Z3JleSIpICsgDQogICAgZ2VvbV9wb2x5Z29uKGRhdGEgPSBpdGFseSwgYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IHJlZ2lvbiksIGZpbGwgPSBOQSwgY29sb3IgPSBOQSkgKyANCg0KICBnZW9tX3BvbHlnb24oZGF0YSA9IGNhdGFuaWEsIGFlcyh4ID0gbG9uZywgeSA9IGxhdCwgZ3JvdXAgPSByZWdpb24pLCBmaWxsID0gInJlZCIsIGNvbG9yID0gInJlZCIpICsNCiAgI2dlb21fcG9pbnQoZGF0YSA9IGNhdGFuaWFfY3JpbWUsIGFlcyh4ID0gTG9uZ2l0dWRlLCB5ID0gTGF0aXR1ZGUsIGdyb3VwID0gQ3JpbWVUaWVyLCBjb2xvciA9IENyaW1lVGllcikpICsNCiAgY29vcmRfbWFwKCkgKw0KICB0aGVtZV92b2lkKCkjICsNCiAjIGxhYnModGl0bGUgPSAiSXRhbHkgQmFzZSBNYXAiKQ0KDQpnZ3Bsb3RseShpdGFseV9tYXApDQpgYGANCg0KYGBge3J9DQpjYXRhbmlhX2NyaW1lIDwtIGNhdGFuaWFfY3JpbWUgJT4lIA0KICBmaWx0ZXIoSW5jb21lVGllciAhPSAiQmFzZWxpbmUiKSAlPiUgDQogIG11dGF0ZSh2aXNpdGFiaWxpdHkgPSBmYWN0b3IoU3R5bGVLZXksIGxldmVscyA9IGMoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluY29tZT1IaWdoZXIgfCBDcmltZT1Mb3dlciIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmNvbWU9TWlkIHwgQ3JpbWU9TG93ZXIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmNvbWU9TWlkIHwgQ3JpbWU9TWlkIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5jb21lPUxvd2VyIHwgQ3JpbWU9TWlkIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5jb21lPUxvd2VyIHwgQ3JpbWU9SGlnaGVyIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKDEsMiwzLDQsNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksDQp2aXNpdGFiaWxpdHkgPSBmYWN0b3IodmlzaXRhYmlsaXR5LCBsYWJlbHMgPSBjKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmNvbWU9SGlnaGVyIHwgQ3JpbWU9TG93ZXIiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5jb21lPU1pZCB8IENyaW1lPUxvd2VyIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5jb21lPU1pZCB8IENyaW1lPU1pZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluY29tZT1Mb3dlciB8IENyaW1lPU1pZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluY29tZT1Mb3dlciB8IENyaW1lPUhpZ2hlciIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygxLDIsMyw0LDUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQopDQpgYGANCg0KDQoNCmBgYHtyfQ0KIyBQbG90IENhdGFuaWEgYXJlIG9ubHkNCmNhdGFuaWFfbWFwIDwtIGdncGxvdCgpICsNCiAgDQogIGdlb21fcG9seWdvbihkYXRhID0gY2F0YW5pYSwgYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IGdyb3VwKSwgZmlsbCA9ICJ3aGl0ZSIsIGNvbG9yID0gImxpZ2h0Z3JleSIpICsNCiAgI2dlb21fcG9pbnQoZGF0YSA9IGNhdGFuaWFfY3JpbWUsIGFlcyh4ID0gTG9uZ2l0dWRlLCB5ID0gTGF0aXR1ZGUsIGdyb3VwID0gQ3JpbWVUaWVyLCBjb2xvciA9IENyaW1lVGllcikpICsNCiAgI2dlb21fcG9pbnQoZGF0YSA9IGNhdGFuaWFfY3JpbWUsIGFlcyh4ID0gTG9uZ2l0dWRlLCB5ID0gTGF0aXR1ZGUsIGdyb3VwID0gSW5jb21lVGllciwgY29sb3IgPSBJbmNvbWVUaWVyKSkgKw0KICBnZW9tX3BvaW50KGRhdGEgPSBjYXRhbmlhX2NyaW1lLCBhZXMoeCA9IExvbmdpdHVkZSwgeSA9IExhdGl0dWRlLCBncm91cCA9IE5hbWUsIGNvbG9yID0gdmlzaXRhYmlsaXR5KSkgKw0KICBjb29yZF9tYXAoKSArDQogIHRoZW1lX3ZvaWQoKSArDQogbGFicyh0aXRsZSA9ICJDYXRhbmlhIFJlZ2lvbiIpICsNCiBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gY29sb3JSYW1wUGFsZXR0ZShjKCJkYXJrZ3JlZW4iLCAicmVkIikpKDUpKSANCmBgYA0KDQpgYGB7cn0NCmdncGxvdGx5KGNhdGFuaWFfbWFwKQ0KYGBgDQoNCg==